Skip to content

Prod: port program analytics and participation UI - #343

Merged
TThanos3000 merged 3 commits into
masterfrom
prod/program-analytics-ui-port
Sep 10, 2026
Merged

TThanos3000 merged 3 commits into
masterfrom
prod/program-analytics-ui-port

Conversation

@TThanos3000

Copy link
Copy Markdown
Contributor

Контекст и база

  • База production master: 2628a25266c4e23373f5fa78a710700e343740f7.
  • DEV reference: 99c8813a66f89560a946eab7d1de73ab2925d0f5.
  • Backend PROD: 907ced23273e298314e9d8604dbaabb25ded6869, image prod-907ced2.
  • Это semantic port поверх production master: без merge dev -> master, без cherry-pick merge-коммитов и без blanket-копирования DEV-файлов.

Что перенесено

  • Manager-only вкладка аналитики /office/program/:programId/analytics с summary, воронками, регионами, activity SVG-графиком, zero/error/loading states.
  • XLSX-экспорт регионов проектов и участников через lazy import write-excel-file.
  • Drilldown назначений/оценок экспертов и блоки внимания: участники без команды, ожидающие оценки, не сданные проекты и задерживающие эксперты.
  • Аналитика кейсов с backend-authoritative order/semantics и responsive layout.
  • Canonical project-program fields по programLinkId, включая системное поле case, submission metadata и multi-program safety.
  • Program application CTA на production-поле currentProjectApplication: создать заявку / перейти в заявку / вы подали проект.
  • Инвалидация welcome-cache по нормализованному numeric program id.
  • Evaluation deadline UX по datetimeEvaluationEnds, включая disabled CTA и readonly rating state.
  • Существующее DEV-поведение rating UI без изменения production rating URL и без исправления отдельной persistence-проблемы.
  • Выбранные улучшения profile programs/share, RegionSelect, project contacts, typed invite errors, project/profile UI, Mont typography и login/register password controls.

Production contracts

Legacy analytics использует только production namespace:

  • GET /programs/:programId/project-analytics/
  • GET /programs/:programId/project-analytics/assignments/
  • GET /programs/:programId/project-analytics/assignments/:assignmentId/scores/
  • GET /programs/:programId/project-analytics/participants-without-team/
  • GET /programs/:programId/project-analytics/projects-awaiting-evaluation/
  • GET /programs/:programId/project-analytics/projects-not-submitted/

/manager-overview/ не используется. Program detail читает current_project_application через существующий CamelcaseInterceptor как currentProjectApplication; DEV-literal currentApplication не используется.

Canonical GET/PUT дополнительных полей выполняется через /programs/partner-program-projects/:programLinkId/fields/. programLinkId остаётся authoritative для GET/PUT/submit и не выводится из singular partnerProgram.

Сохранение production master

Сохранены production-only изменения и regression-контракты #304, #306, #310, #313 и #315. Vacancy-файлы/flow, shared app-modal, production rating adapter URL, workflows, Docker и angular.json не менялись.

Карта DEV references

Явно не включено

  • DEV vacancy rewrites и любые React/backend изменения.
  • Shared modal changes и DEV: fix rating API URL and analytics UI states #342 rating URL change.
  • Отдельные PROD follow-up: rating persistence, profile title overlap, project validation icon geometry, reset/new-password inconsistency и rename «Назначений всего».

Dependencies

Добавлена только прямая зависимость [email protected]; lock-файл добавляет только её транзитивную зависимость [email protected]. Прочие зависимости не обновлялись.

Проверки

  • npm ci — успешно.
  • Targeted regression: 81/81 файлов, 706/706 тестов — успешно; дополнительный финальный analytics spec: 38/38.
  • npm run test:ci на локальном Node 24 — известный NG0401 на штатном pool до запуска тестов.
  • Sequential fork fallback — 361/361 файлов и 1500/1500 тестов прошли; процесс завершился с кодом 1 только после тестов из-за локального teardown timer ngx-autosize: window is not defined в неизменённом news-form.component.spec.ts. Test infrastructure в этом PR не менялась; чистый CI run обязателен перед merge.
  • npm run lint:ts — 0 errors, 6 существующих warnings в неизменённых файлах.
  • npm run build:prod — успешно; только существующие Angular/Sass/CommonJS/budget warnings.
  • Scoped Prettier — 147/147 файлов успешно.
  • Scoped Stylelint — 20/20 SCSS-файлов успешно.
  • git diff --check — успешно.
  • git diff --exit-code -- .github Dockerfile angular.json — успешно.
  • Контрактный аудит: нет /manager-overview/, нет currentApplication, нет diff в vacancy/shared-modal/rating-adapter/reset-password paths.

Responsive smoke

  • Browser smoke выполнен на 390, 768 и 1280 px для login/register; native password controls и autocomplete проверены, мобильного horizontal scroll нет.
  • Protected analytics route без токенов корректно перенаправляет на login.
  • Authenticated program analytics/profile/project состояния покрыты component/facade tests и scoped responsive SCSS review. Полный browser smoke этих состояний локально не выполнялся без тестового manager-аккаунта и согласованного backend dataset; его нужно пройти на preview/stage перед merge.

Exact PR head: fe416aa9be9f112c9f2c6bbe539ff946c15f8f3c.

Draft only. Не merge и не deploy.

…polish

Prod: polish release UI and rating persistence
@TThanos3000
TThanos3000 marked this pull request as ready for review September 10, 2026 19:03
@TThanos3000
TThanos3000 merged commit 8abbff5 into master Sep 10, 2026
@TThanos3000
TThanos3000 deleted the prod/program-analytics-ui-port branch September 10, 2026 19:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants